home *** CD-ROM | disk | FTP | other *** search
/ Computer Shopper 125 / Computer Shopper CD-ROM Issue 125 (1998-07)(Dennis Publishing).iso / Business / Dazzler / DAZZLER.Z / CListBox.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-11-26  |  4.0 KB  |  223 lines

  1. import java.awt.Color;
  2. import java.awt.Font;
  3. import java.awt.Graphics;
  4. import java.awt.Point;
  5. import java.awt.Toolkit;
  6. import java.util.NoSuchElementException;
  7. import java.util.StringTokenizer;
  8.  
  9. class CListBox {
  10.    private int m_nFlags;
  11.    private CRect m_rcDraw;
  12.    private Font m_Font;
  13.    private Color m_rgbFg;
  14.    private Color m_rgbBg;
  15.    private int m_nLineHeight;
  16.    private CIntArray m_nSelections;
  17.    private CStringArray m_strListText;
  18.    private boolean m_bHasFocus;
  19.  
  20.    public void SetRect(CRect var1) {
  21.       this.m_rcDraw.reshape(var1);
  22.    }
  23.  
  24.    private void AddSelection(int var1) {
  25.       int var2;
  26.       for(var2 = 0; this.m_nSelections.GetAt(var2) < var1 && var2 < this.m_nSelections.GetSize(); ++var2) {
  27.       }
  28.  
  29.       this.m_nSelections.InsertAt(var2, var1);
  30.    }
  31.  
  32.    public void DrawControl() {
  33.       this.DrawControl(Globals.thePresView.GetDC(), this.m_rcDraw);
  34.    }
  35.  
  36.    public void DrawControl(Graphics var1, CRect var2) {
  37.       if (var1 == null) {
  38.          var1 = Globals.thePresView.GetDC();
  39.       }
  40.  
  41.       if (var2 == null) {
  42.          var2 = this.m_rcDraw;
  43.       }
  44.  
  45.       if (var1 != null && var2 != null) {
  46.          Graphics var3 = var1.create();
  47.          var3.clipRect(var2.x, var2.y, var2.width, var2.height);
  48.          var3.setColor(this.m_rgbBg);
  49.          var3.fillRect(var2.x, var2.y, var2.width, var2.height);
  50.          if ((this.m_nFlags & 16) != 0) {
  51.             var3.setColor(Color.black);
  52.             var3.drawRect(var2.x, var2.y, var2.width - 1, var2.height - 1);
  53.             var3.clipRect(var2.x + 1, var2.y + 1, var2.width - 2, var2.height - 2);
  54.          }
  55.  
  56.          var3.setColor(this.m_rgbFg);
  57.          var3.setFont(this.m_Font);
  58.          this.m_nLineHeight = var3.getFontMetrics().getHeight();
  59.          int var4 = var3.getFontMetrics().getAscent();
  60.  
  61.          for(int var5 = 0; var5 < this.m_strListText.GetSize(); ++var5) {
  62.             var3.drawString(this.m_strListText.GetAt(var5), var2.x + 5, var2.y + var4 + var5 * this.m_nLineHeight);
  63.          }
  64.  
  65.          var3.setXORMode(Color.white);
  66.          var3.setColor(Color.black);
  67.  
  68.          for(int var6 = 0; var6 < this.m_nSelections.GetSize(); ++var6) {
  69.             var3.fillRect(var2.x, var2.y + this.m_nSelections.GetAt(var6) * this.m_nLineHeight, var2.width, this.m_nLineHeight);
  70.          }
  71.       }
  72.  
  73.    }
  74.  
  75.    public int GetSelCount() {
  76.       return this.m_nSelections.GetSize();
  77.    }
  78.  
  79.    public boolean FindItem(String var1) {
  80.       if (var1 != null && var1.length() > 0) {
  81.          for(int var2 = 0; var2 < this.m_strListText.GetSize(); ++var2) {
  82.             if (this.m_strListText.GetAt(var2).equals(var1)) {
  83.                return true;
  84.             }
  85.          }
  86.       }
  87.  
  88.       return false;
  89.    }
  90.  
  91.    public boolean ProcessMouseUp(Point var1) {
  92.       this.m_bHasFocus = false;
  93.       return false;
  94.    }
  95.  
  96.    public boolean HasFocus() {
  97.       return this.m_bHasFocus;
  98.    }
  99.  
  100.    CListBox(int var1, CRect var2) {
  101.       this.m_nFlags = var1;
  102.       this.m_rcDraw = var2;
  103.       this.m_Font = new Font("Helvetica", 0, 20);
  104.       this.m_rgbFg = new Color(0, 0, 0);
  105.       this.m_rgbBg = new Color(255, 255, 255);
  106.       this.m_nLineHeight = Toolkit.getDefaultToolkit().getFontMetrics(this.m_Font).getHeight();
  107.       this.m_nSelections = new CIntArray();
  108.       this.m_strListText = new CStringArray();
  109.       this.m_bHasFocus = false;
  110.    }
  111.  
  112.    public void SetBgColour(Color var1) {
  113.       this.m_rgbBg = var1;
  114.    }
  115.  
  116.    public void SetFgColour(Color var1) {
  117.       this.m_rgbFg = var1;
  118.    }
  119.  
  120.    public boolean ProcessMouseDown(Point var1) {
  121.       this.m_bHasFocus = true;
  122.       int var2 = (var1.y - this.m_rcDraw.y) / this.m_nLineHeight;
  123.       if (var2 >= 0 && var2 < this.m_strListText.GetSize()) {
  124.          if ((this.m_nFlags & 8) != 0 && this.m_nSelections.GetSize() > 0) {
  125.             for(int var3 = 0; var3 < this.m_nSelections.GetSize(); ++var3) {
  126.                if (var2 == this.m_nSelections.GetAt(var3)) {
  127.                   this.m_nSelections.RemoveAt(var3);
  128.                   break;
  129.                }
  130.  
  131.                if (var3 == this.m_nSelections.GetSize() - 1) {
  132.                   this.AddSelection(var2);
  133.                   break;
  134.                }
  135.             }
  136.  
  137.             this.DrawControl();
  138.          } else if (this.m_nSelections.GetAt(0) != var2) {
  139.             this.m_nSelections.SetAtGrow(0, var2);
  140.             this.DrawControl();
  141.          }
  142.       }
  143.  
  144.       return false;
  145.    }
  146.  
  147.    public String SetSelections(String var1, String var2) {
  148.       String var3 = "";
  149.       boolean var4 = false;
  150.       String var5 = "";
  151.       var2 = var2.length() > 0 ? var2 : "\r\n";
  152.       this.m_nSelections.RemoveAll();
  153.       if (var1.length() > 0) {
  154.          StringTokenizer var6 = new StringTokenizer(var1, var2);
  155.  
  156.          while(var6.hasMoreTokens()) {
  157.             var3 = var6.nextToken();
  158.  
  159.             for(int var9 = 0; var9 < this.m_strListText.GetSize(); ++var9) {
  160.                if (var3.toLowerCase().equals(this.m_strListText.GetAt(var9).toLowerCase())) {
  161.                   if ((this.m_nFlags & 8) == 0) {
  162.                      this.m_nSelections.SetAtGrow(0, var9);
  163.                      var5 = this.m_strListText.GetAt(var9);
  164.                   } else {
  165.                      this.AddSelection(var9);
  166.                   }
  167.                   break;
  168.                }
  169.             }
  170.          }
  171.       }
  172.  
  173.       return var5;
  174.    }
  175.  
  176.    public void SetFont(Font var1) {
  177.       this.m_Font = var1;
  178.       this.m_nLineHeight = Toolkit.getDefaultToolkit().getFontMetrics(this.m_Font).getHeight();
  179.    }
  180.  
  181.    public String GetSel() {
  182.       return this.m_strListText.GetAt(this.m_nSelections.GetAt(0));
  183.    }
  184.  
  185.    public String GetSel(int var1) {
  186.       return this.m_strListText.GetAt(this.m_nSelections.GetAt(var1));
  187.    }
  188.  
  189.    public int FillListBox(String var1, String var2) {
  190.       String var3 = "";
  191.       int var4 = 0;
  192.       var2 = var2.length() > 0 ? var2 : "\r\n";
  193.       this.m_strListText.RemoveAll();
  194.       if (var1.length() > 0) {
  195.          for(StringTokenizer var5 = new StringTokenizer(var1, var2); var5.hasMoreTokens(); ++var4) {
  196.             try {
  197.                var3 = var5.nextToken();
  198.             } catch (NoSuchElementException var6) {
  199.             }
  200.  
  201.             if ((this.m_nFlags & 4) != 0) {
  202.                for(var4 = 0; this.m_strListText.GetAt(var4).toLowerCase().compareTo(var3.toLowerCase()) < 0 && var4 < this.m_strListText.GetSize(); ++var4) {
  203.                }
  204.             }
  205.  
  206.             this.m_strListText.InsertAt(var4, var3);
  207.          }
  208.       }
  209.  
  210.       return this.m_strListText.GetSize() * this.m_nLineHeight;
  211.    }
  212.  
  213.    public boolean ProcessMouseMove(Point var1) {
  214.       int var2 = (var1.y - this.m_rcDraw.y) / this.m_nLineHeight;
  215.       if (var2 >= 0 && var2 < this.m_strListText.GetSize() && var2 != this.m_nSelections.GetAt(0)) {
  216.          this.m_nSelections.SetAtGrow(0, var2);
  217.          this.DrawControl();
  218.       }
  219.  
  220.       return false;
  221.    }
  222. }
  223.